<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 箭头函数的应用1：简化回调函数的定义
        var arrs=["tom","alice","cici","lili"];
        // arrs.forEach(function(value,index){
        //     console.log(value,index);
        // });

        arrs.forEach((value,index)=>{
            console.log(value,index);
        });


        // 箭头函数的应用2：固定函数内this的指向
        /* ES6中的箭头函数中的this指向于当前函数定义时是上下文对象(调用者)
        箭头函数不会构建this，箭头函数中的this是一个引用，引用的是定义时候的上下文对象
        箭头函数在浏览器中定义时候，会层层寻找上下文，如果没有，恒指向于window */
        
        var user={
            name:"霍建华",
            print1:function(){
                console.log(this);
            },
            print2:()=>{
                console.log(this)
            },
            print3:function(){
                "use strict";
                console.log(this);
                function show1(){
                    console.log(this);
                }
                let show2=()=>{
                    console.log(this);
                };
                show1();
                show2();
            }
        };
        // user.print1();
        // user.print2();
        // user.print3();
        let f=user.print3;
        f();
        console.log("==========================");
        let objs={
            name:"嘻嘻嘻",
            print:function(){
                let f1=()=>{
                    let f2=()=>{
                        let f3=()=>{
                            let f4=()=>{
                                let f5=()=>{
                                    console.log(this);
                                };
                                f5();
                            };
                            f4();
                        };
                        f3();
                    };
                    f2();
                };
                f1();
            }
        };  
        objs.print();
       
    </script>
</head>
<body>
    
</body>
</html>